
/**Создать приложение аналогичное терминалу в *nix или 
командной строке в Windows. После запуска из консоли 
выводится общая помощь с перечислением команд и 
их кратким описанием. Список команд:
	dir <директория> - вывод всего содержимого директории
	copy <src> <dest> - копирование файла или директории
	delete <src> - удаление файла или директории
	rename <src> <new_name> - переименование файла или директории
	mkdir <src> - создание директории
	mkfile <src> - создание файла
	sort <src> <type> - сортировка содержимого директории

В обязательном порядке должны быть реализованы интерфейсы,
перечисленные в приложенном файле. Интерфейсы поместить в 
пакет с именем Filesystem.
 * 
 * /
/**
 *
 * @author asfeor
 * Все параметры комманд вводятся в одинарных ковычках т.е. -CD 'd:\Program Files\Java00' -F 'ne.*'
 * mkDir 'first', dCopy 'd:\folder' в dCopy Delete fCopy mkDir mkFile можно указывать только имя 
 * директории или файла или полный путь здесь это не столь важно.
 * в маске поиску вместо * нужно писать .* 
 */
import FileSystem.*;
import Help.*;
import Analisis.*;
import java.io.File;
import java.util.Scanner;
import Printers.*;
public class DirNet {

    /**
     * @param args the command line arguments
     */ 
    private static String Directory;
    private static boolean flag_cd = false;
  public static void main(String[] args) {
      Help help=new Help();
      Directory = new File("").getAbsolutePath();
      
      do { 
      if (args.length>0) {
         
          
              Analis compilum = new Analis(); 
               if (!compilum.sAnalis(args)) { 
        /**
   * метод по средствам которого выполняет обработку данных анализа строки.
   * 
   */                
      if (compilum.fCD) { flag_cd=true; 
                          Directory=compilum.sDir;
                          
      }
        else
      if (compilum.fCopy) { if (!new File(Directory+File.separator+compilum.sCopy_name).exists()) { 
                                     System.out.println("File or directory don't exist");
                                     help.help();}
                            else if (!new CopySome().copy(Directory+File.separator+compilum.sCopy_name,compilum.sCopy_path)) 
                                System.out.println("One or more files is protectit or system ");
       
        }
       else
      if (compilum.fDel)  { if (!new File(compilum.sName).exists()) {
                                System.out.println("File do not exist");
                                help.help();
                                    }
                                else if (!new Deliting().delete(Directory + File.separator+compilum.sName))        
                                          System.out.println("File or directory is protected or system");
         }
       else
      if (compilum.fDir)  {  if (!new Creating().createDirectory(Directory, compilum.sName)) {
          System.out.println("Directory is exist of adress is wrong ");
      }
                else System.out.println("Folder was created ");
        
        }
       else
      if (compilum.fDirList) { new dirList().d_list(compilum.sDir_List_dir);
        
        }
       else
      if (compilum.fFile) { if (!new Creating().createFile(Directory, compilum.sName)) {
                      System.out.println("File is exist or adress is wrong ");
      }
                      else System.out.println("File was created");
      
        
        }
       else
      if (compilum.fFind) { new PrintCollection().print(new Findign().find(Directory+
                                                                File.separator, compilum.sMask));
       
        }
      else
      if (compilum.fListSort) {
      
        }
       else
      if (compilum.fRename) { if (!new Renames().remame(Directory+File.separator+compilum.sRename_scr, 
              Directory+File.separator+compilum.sRename_new_name)) 
          System.out.println("File or folder is protected or do not exist ");
      else System.out.println("Renamed is complet");
       
       }
      else 
          if (compilum.fCD_exit) {flag_cd=false; break;}
       
               }
                else help.help();
              System.out.println(" current directory:  "+Directory + " :> \n"); 
              Scanner arg=new Scanner(System.in);
             
             args= arg.nextLine().split(" ");
            
      }
      else { help.help();
      System.out.println(" current directory:  "+Directory + " :>");}
     
      } while (flag_cd);
          
  
  }


}
